This disclosure relates to computer-based computational techniques involving random and non-random data sequences for use with various applications.
For example, known techniques for data compression are redundancy-based data compression procedures. Such techniques include both lossy and lossless data compression techniques. Typically, lossless data compression allows for about a 1:1 compression ratio for random data, and about 2:1 and less for minimal data loss or higher compression with concomitant higher loss, for non-random data sequences compression ratios. These ratios result because most compression techniques are statistically based, and thus the compression ratio dependent on the statistical distribution of the zeros (0) and ones (1) in the data being compressed.
Cryptography is widely used in modern systems and communications. Among the known types of cryptography are symmetric-key cryptography and public key cryptography. In symmetric key encryption both sender and receiver share the same key (or different keys that are related in an easily computable way). Symmetric key ciphers are implemented as either block ciphers or stream ciphers. A block cipher enciphers input in blocks of plaintext as opposed to individual characters, the input form used by a stream cipher. Stream ciphers, in contrast to the ‘block’ type, produce an arbitrarily long stream of key material, which is combined with the plaintext bit-by-bit or character-by-character. In a stream cipher, the output stream is produced based on a hidden internal state which changes as the cipher operates. That internal state is initially set up using the secret key.
In contrast to symmetric-key, another type of cryptography is public-key cryptography. In public key cryptography there is a private key and a public key. The public key is freely distributed, while its paired private key is kept secret. In a public-key encryption, the public key is used for encryption, while the private or secret key is used for decryption.
Cryptographic hash functions are a third type of cryptographic algorithm. They take a message of any length as input, and output a short, fixed length hash which can be used in (for example) a digital signature. For good hash functions, it should be very difficult to find two messages that produce the same hash.
Message authentication codes (MACs) are much like cryptographic hash functions. In a message authentication code, a secret key is applied to the message to produce a MAC or a MAC tag. The message and MAC tag are transmitted, and a secret key at a receiver is used to authenticate the hash value (MAC) upon receipt. If the same secret keys were used and if the message was not altered then the receiver can have confidence that the message received was the actual message sent by the authentic sender.
Transmission of data across networks is widely used. Exemplary transmission techniques involve packet mode transmission and circuit switched networks. Generally a formatted unit of data includes a header that contains address and control information and a payload that contains data. Packets and cells are common examples of such formatted units of data.
Memory and storage are also widespread. Memories are generally regarded as semiconductor based and often used for high speed random access. Memories are typically used in main memory and cache memory. In contrast, storage systems are typically slower speed and involve optical or magnetic storage devices such as disk storage. However, some types of storage systems that are finding more acceptance are semiconductor based. Generally, storage systems are persistent meaning that data are not lost when power is removed.
Virtual memory is a memory management technique that virtualizes various forms of computer data storage (such as random-access memory and disk storage), allowing a program to be designed as though there is only one kind of memory, “virtual” memory, which behaves like directly addressable read/write memory (RAM).
Hash functions are techniques that map large data sets of variable length, called keys, to smaller data sets of a fixed length. The results of applying a hash function are, e.g., hash values or hashes. These types of hash functions are not to be confused with cryptographic hash functions discussed above.